【发布时间】:2016-04-28 08:00:11
【问题描述】:
我正在尝试用 exec() 和 fork() 做一个简单的例子。但是我有一个小问题,我不明白如何解决它。
代码执行了 3 个分叉,并且在每个子节点中调用了一个 exec。第一个系统调用是“who”,在“cd”和“ls -ls”之后。我的问题是:在“cd”之后,“ls”调用不显示当前目录中的文件。所以,如果我有'dir1/dir2',我会执行“cd”,但是当我执行“ls”时,程序会显示“dir/dir2”中的文件。
一个孩子可以访问另一个孩子所做的更改吗?
while (cont_arg < 3) {
pid_t pid = fork();
if (pid == -1) {
perror("fork failed");
exit(EXIT_FAILURE);
} else if (pid == 0) {
printf("\n---: child process ID -> %d.\n", getpid());
printf("command --- > %s\n", command[cont_arg]);
execlp(command[cont_arg], command[cont_arg], arg[cont_arg], NULL);
_exit(EXIT_SUCCESS);
} else {
wait(&status);
}
cont_arg++;
}
【问题讨论】:
标签: c linux fork exec system-calls