我想通过做一些练习来学习在UNIX上编写C程序,但是我被困在这一块上。在本练习中,我需要父进程等待子进程执行某些操作的准确时间,然后父进程应该通过给出子进程的ID来终止它。这是我的代码。等待子进程的定义时间
int main()
{
int pid;
pid = fork();
if (pid < 0)
{
printf("\n Error ");
exit(1);
}
else if (pid == 0)
{
printf("\n Id of child is %d ",getpid());
}
else
{
sleep 3;
kill(0);
exit(1);
}
}
问题如下。我不确定睡眠3是否意味着父母等待3秒钟进行儿童进程。我想到了这样的一种方法,但似乎等待子进程终止。
int Time;
waitpid(childPid, &Time, 0);
if (Time == 0)
{
printf("Correct");
}
if (Time == 1)
{
printf("Error");
}
第二个问题可能更简单,但我找不到哪个功能可以实现这一点。一个孩子进程(或父母,无关紧要)如何执行内置程序?
http://pubs.opengroup.org/onlinepubs/007908775/xsh/sleep.html它以毫秒为单位。 – stackptr
'杀(0);'不会做你认为它的事。您可能还想启用编译器警告。 – EOF
@stackptr:什么是毫秒?你给出的链接的概要是'unsigned int sleep(unsigned int seconds);' - 这看起来像我期望的秒数。 AFAIK,在POSIX中没有,也从来没有一个毫秒级的睡眠机制。有经典的整秒“sleep()”;微秒usleep()'(现在不推荐使用,如果不是从当前的POSIX中丢失的话)。还有现代纳秒级的nanosleep()'。 –