QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 758|回复: 8

求调用时间函数和创建进程的函数!和解题思路

[复制链接]
发表于 2004-4-5 17:45:53 | 显示全部楼层 |阅读模式
求调用时间函数和创建进程的函数!和解题思路
题如下:

跑了几个位置都没得到解决,

用C程序写:


父进程显示当前系统日期,创建一个子进程,显示当时时间,并且很一秒跳动一下!共跳动三次~

麻烦了...谢谢!~
发表于 2004-4-5 20:03:58 | 显示全部楼层
在man手册里面寻找下面提到的函数:
sleep函数用来延时
fork用来创建子进程
这种简单通信用管道就可以了,具体可以看pipe函数
时间函数查看time函数
嗯……差不多了……
回复

使用道具 举报

 楼主| 发表于 2004-4-5 20:20:16 | 显示全部楼层
能不程序写一下吗> ̄!
回复

使用道具 举报

发表于 2004-4-5 20:52:00 | 显示全部楼层
[code:1]
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <time.h>
#include <wait.h>
int main(){
  pid_t pid;
  char *message;
  int n;
  
  struct tm *tm_ptr;
  time_t cur_time;
  time(&cur_time);
  tm_ptr = localtime(&cur_time);

  printf("Local   time: %s",asctime(tm_ptr));
  pid = fork();
  switch(pid){
  case -1:
    perror("fork failed!\n");
    exit(0);
  case 0:
    for (n=0;n<3;n++){
      cur_time = time(NULL);
      tm_ptr = localtime(&cur_time);      
      printf("Current time: %02d:%02d:%02d\n",tm_ptr->tm_hour,tm_ptr->tm_min,tm_ptr->tm_sec);
      sleep(1);
    }
   
    break;
  default:
        
    break;
  }
  if(pid !=0){
    int status;
    pid_t child_pid;
    child_pid = wait(&status);
    if (!WIFEXITED(status))
      //you can capture other exit status use MACRO
      //    WIFSIGNALED and WIFSTOPPED
      printf("abnormal termination\n");
      
  }
  
  exit(0);
}
[/code:1]
回复

使用道具 举报

 楼主| 发表于 2004-4-7 20:29:37 | 显示全部楼层
能把头文件给偶没

我的TC里没这个头文件。!

include <wait.h> 这个的头文件没??
include <unistd.h> 这个的头文件没??
回复

使用道具 举报

发表于 2004-4-7 20:50:26 | 显示全部楼层
wait.h的作用就是那个if 中的宏,不要也可以(只是程序没那么健壮)
[code:1]
#include &lt;sys/types.h&gt;
#include &lt;unistd.h&gt;
#include &lt;stdio.h&gt;
#include &lt;time.h&gt;

//if you can't get through compile while including &lt;wait.h&gt;,comment out &lt;wait.h&gt;
//#include &lt;wait.h&gt;
int main&#40;&#41;&#123;
  pid_t pid;
  char *message;
  int n;
  
  struct tm *tm_ptr;
  time_t cur_time;
  time&#40;&amp;cur_time&#41;;
  tm_ptr = localtime&#40;&amp;cur_time&#41;;

  printf&#40;&quot;Local   time&#58; %s&quot;,asctime&#40;tm_ptr&#41;&#41;;
  pid = fork&#40;&#41;;
  switch&#40;pid&#41;&#123;
  case -1&#58;
    perror&#40;&quot;fork failed!\n&quot;&#41;;
    exit&#40;0&#41;;
  case 0&#58;
    for &#40;n=0;n&lt;3;n++&#41;&#123;
      cur_time = time&#40;NULL&#41;;
      tm_ptr = localtime&#40;&amp;cur_time&#41;;      
      printf&#40;&quot;Current time&#58; %02d&#58;%02d&#58;%02d\n&quot;,tm_ptr-&gt;tm_hour,tm_ptr-&gt;tm_min,tm_ptr-&gt;tm_sec&#41;;
      sleep&#40;1&#41;;
    &#125;
   
    break;
  default&#58;
        
    break;
  &#125;
  if&#40;pid !=0&#41;&#123;
    int status;
    pid_t child_pid;
    child_pid = wait&#40;&amp;status&#41;;

    //    if &#40;!WIFEXITED&#40;status&#41;&#41;
      //you can capture other exit status use MACRO WIFSIGNALED and WIFSTOPPED
    //  printf&#40;&quot;abnormal termination\n&quot;&#41;;
      
  &#125;
   
  exit&#40;0&#41;;
&#125;
[/code:1]
回复

使用道具 举报

 楼主| 发表于 2004-4-7 21:04:09 | 显示全部楼层
不好意思。。刚刚掉了一个

include <unistd.h> 的头文件也没!
回复

使用道具 举报

 楼主| 发表于 2004-4-7 21:05:19 | 显示全部楼层
unistd.h的头文件也没。。
回复

使用道具 举报

发表于 2004-4-7 21:11:36 | 显示全部楼层
可以不要,我多写了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 17:08 , Processed in 0.041082 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表