0
在父進程退出vfork後,是否可以「跳回」子進程?
比方說,我有這個簡單的應用:分叉父進程退出後跳回到子進程
#include <iostream>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
using namespace std;
int main (void)
{
pid_t cpid = vfork();
if (cpid < 0) cout << "error with fork\n";
else if (cpid == 0)
{
cout << "cin from child: ";
int a = 0;
cin >> a;
exit (0);
}
else
{
cout << "cin from parent: ";
int a, status;
waitpid (cpid, &status, WNOHANG);
cin >> a;
}
return 0;
}
有了這個代碼,我需要給孩子中第一個輸入數字。
之後,我需要在家長中輸入一個數字。
而之後,我想孩子再次出現,
所以這可能嗎?
你明白正確,我想重新運行子進程內的代碼。問題是......我的應用程序需要將uid切換到進程。如果我將uid usind setuid切換爲0(#root),我可以將id切換爲默認用戶而沒有任何問題,但是我無法切換回默認用戶(Linux)無法設置uid。這就是爲什麼我會退出父母並回到與uid 0(孩子用作守護進程)運行的孩子, – user1533754