1第一题
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>
typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;
int main(int argc, const char *argv[])
{
//写入文件的数据
int fd1=open("./1.c",O_WRONLY | O_TRUNC | O_CREAT,0664);
if(fd1<0)
{
perror("fd1 error");
return -1;
}
//定义写入存储数据的容器
char write_buf[128]={0};
printf("请输入数据:");
scanf("%s",write_buf);//输入数据
write(fd1,write_buf,strlen(write_buf));
close(fd1);
//创建子进程
pid_t pid=fork();
if(pid==0/*子进程运行部分*/)
{
int fd2=open("./1.c",O_RDONLY);
if(fd2<0)
{
perror("fd2 error");
return -1;
}
while(1)
{
char read_buf[32]={0};//读取数据的容器
int res=read(fd1,read_buf,32);//读取内容
if(res<0/*判断读取是否出错*/)
{
perror("res error");
return -1;
}
if(res == 0/*判断是否读取到文件结束符*/)
{
break;
}
write(STDOUT_FILENO,read_buf,res);//写入到终端
}
close(fd2);
}
return 0;
}
2. 第二题
#include <stdio.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>
typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;
int main(int argc, const char *argv[])
{
//创建父子进程
pid_t pid =fork();
if(pid == 0 /*子进程运行部分*/)
{
execl("./1","./1",NULL);
}
else if(pid > 0 /*父进程运行部分*/)
{
char* arg[]={"./1",NULL};
execv("./1",arg);
}
else
{
perror("fork");
printf("进程创建失败\n");
}
return 0;
}
#include <stdio.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>
typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;
int main(int argc, const char *argv[])
{
system("find /usr -name include");
return 0;
}