在我的程序中,我有一个fork()
,它从父级创建一个子进程。该子项首先运行并创建一个文本文件“ text.txt ”。它存储了各种各样的东西,然后父函数必须使用exec()
命令打印出目录,然后显示文件的内容。
到目前为止,我在这一点上有这两行:
execlp("/bin/pwd", "pwd", NULL);
execlp("/bin/cat", "cat", "text.txt", NULL);
如果只有一个程序运行,这两个程序都能很好地工作。但是,当我同时拥有它们时,只有第一个在程序结束之前运行。我如何让它们一个接一个地运行?
为清楚起见,教师请求两个exec()都在同一个子进程中。
答案 0 :(得分:0)
execlp()将替换您的进程,并且只有在失败时才会返回。解决这个问题的常用方法是使用fork()。
if (fork() == 0)
{
execlp("/bin/pwd", "pwd", NULL);
perror ("execlp(bin/pwd)");
exit(1);
}
wait(&status); /* wait for child to finish */
if (fork() == 0)
{
execlp("/bin/cat", "cat", "text.txt", NULL);
perror ("execlp(bin/pwd)");
exit(1);
}
wait(&status); /* wait for child to finish */