问题描述
- 关于Linux的三个编程题,想了半天毫无头绪,感觉Linux编程好复杂。求大家帮助帮助我,谢谢。
-
1:子进程每隔一秒向文件写入信息,父进程每隔三秒读出子进程所写的信息并输出到屏幕。
2:模拟shell,设计一个交互式命令处理程序,注意对命令参数和环境参数的处理。
3:编写一个守护进程,实现功能为:每隔一秒,向当前目录下的hello文件里写入一行helloworld。
解决方案
Linux设备驱动编程之复杂设备驱动
25岁了,是学linux运维还是编程好呢?求指点下 ..
解决方案二:
楼上说的非常对,我很赞同
解决方案三:
这是我写的守护进程
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
//创建守护进程
void init_daemon(){
pid_t pid;
int i;
if(pid = fork()){
//是父进程,结束父进程
exit(0);
}else if(pid < 0){
//fork失败,退出
perror("fork error");
exit(-1);
}else{
//第一个子进程,后台继续执行
setsid();//第一个子进程成为新的会话组长和进程组长并与控制终端分离
if(pid = fork()){
//是第一个子进程,结束
exit(0);
} else if(pid < 0){
perror("fork");
exit(-1);
}else{
//第二个子进程,继续,其不再是会话组长
for(i = 0; i < getdtablesize();i++){
//关闭打开的文件描述符
close(i);
}
//重设文件创建掩码
umask(0);
}
}
}
int main()
{
char *buf = "hello world
";
int fd;
init_daemon();
while(1){
if(fd = open("hello.txt",O_CREAT|O_WRONLY|O_APPEND,0600)<0){
perror("open");
exit(-1);
}
write(fd,buf,strlen(buf));
close(fd);
sleep(1);
}
return 0;
}
解决方案四:
这是我写的守护进程
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
//创建守护进程
void init_daemon(){
pid_t pid;
int i;
if(pid = fork()){
//是父进程,结束父进程
exit(0);
}else if(pid < 0){
//fork失败,退出
perror("fork error");
exit(-1);
}else{
//第一个子进程,后台继续执行
setsid();//第一个子进程成为新的会话组长和进程组长并与控制终端分离
if(pid = fork()){
//是第一个子进程,结束
exit(0);
} else if(pid < 0){
perror("fork");
exit(-1);
}else{
//第二个子进程,继续,其不再是会话组长
for(i = 0; i < getdtablesize();i++){
//关闭打开的文件描述符
close(i);
}
//重设文件创建掩码
umask(0);
}
}
}
int main()
{
char *buf = "hello world
";
int fd;
init_daemon();
while(1){
if(fd = open("hello.txt",O_CREAT|O_WRONLY|O_APPEND,0600)<0){
perror("open");
exit(-1);
}
write(fd,buf,strlen(buf));
close(fd);
sleep(1);
}
return 0;
}
解决方案五:
这是我写的守护进程
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
//创建守护进程
void init_daemon(){
pid_t pid;
int i;
if(pid = fork()){
//是父进程,结束父进程
exit(0);
}else if(pid < 0){
//fork失败,退出
perror("fork error");
exit(-1);
}else{
//第一个子进程,后台继续执行
setsid();//第一个子进程成为新的会话组长和进程组长并与控制终端分离
if(pid = fork()){
//是第一个子进程,结束
exit(0);
} else if(pid < 0){
perror("fork");
exit(-1);
}else{
//第二个子进程,继续,其不再是会话组长
for(i = 0; i < getdtablesize();i++){
//关闭打开的文件描述符
close(i);
}
//重设文件创建掩码
umask(0);
}
}
}
int main()
{
char *buf = "hello world
";
int fd;
init_daemon();
while(1){
if(fd = open("hello.txt",O_CREAT|O_WRONLY|O_APPEND,0600)<0){
perror("open");
exit(-1);
}
write(fd,buf,strlen(buf));
close(fd);
sleep(1);
}
return 0;
}
解决方案六:
这是我写的守护进程
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
//创建守护进程
void init_daemon(){
pid_t pid;
int i;
if(pid = fork()){
//是父进程,结束父进程
exit(0);
}else if(pid < 0){
//fork失败,退出
perror("fork error");
exit(-1);
}else{
//第一个子进程,后台继续执行
setsid();//第一个子进程成为新的会话组长和进程组长并与控制终端分离
if(pid = fork()){
//是第一个子进程,结束
exit(0);
} else if(pid < 0){
perror("fork");
exit(-1);
}else{
//第二个子进程,继续,其不再是会话组长
for(i = 0; i < getdtablesize();i++){
//关闭打开的文件描述符
close(i);
}
//重设文件创建掩码
umask(0);
}
}
}
int main()
{
char *buf = "hello world
";
int fd;
init_daemon();
while(1){
if(fd = open("hello.txt",O_CREAT|O_WRONLY|O_APPEND,0600)<0){
perror("open");
exit(-1);
}
write(fd,buf,strlen(buf));
close(fd);
sleep(1);
}
return 0;
}
解决方案七:
这是我写的守护进程
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
//创建守护进程
void init_daemon(){
pid_t pid;
int i;
if(pid = fork()){
//是父进程,结束父进程
exit(0);
}else if(pid < 0){
//fork失败,退出
perror("fork error");
exit(-1);
}else{
//第一个子进程,后台继续执行
setsid();//第一个子进程成为新的会话组长和进程组长并与控制终端分离
if(pid = fork()){
//是第一个子进程,结束
exit(0);
} else if(pid < 0){
perror("fork");
exit(-1);
}else{
//第二个子进程,继续,其不再是会话组长
for(i = 0; i < getdtablesize();i++){
//关闭打开的文件描述符
close(i);
}
//重设文件创建掩码
umask(0);
}
}
}
int main()
{
char *buf = "hello world
";
int fd;
init_daemon();
while(1){
if(fd = open("hello.txt",O_CREAT|O_WRONLY|O_APPEND,0600)<0){
perror("open");
exit(-1);
}
write(fd,buf,strlen(buf));
close(fd);
sleep(1);
}
return 0;
}
解决方案八:
这是我写的守护进程
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
//创建守护进程
void init_daemon(){
pid_t pid;
int i;
if(pid = fork()){
//是父进程,结束父进程
exit(0);
}else if(pid < 0){
//fork失败,退出
perror("fork error");
exit(-1);
}else{
//第一个子进程,后台继续执行
setsid();//第一个子进程成为新的会话组长和进程组长并与控制终端分离
if(pid = fork()){
//是第一个子进程,结束
exit(0);
} else if(pid < 0){
perror("fork");
exit(-1);
}else{
//第二个子进程,继续,其不再是会话组长
for(i = 0; i < getdtablesize();i++){
//关闭打开的文件描述符
close(i);
}
//重设文件创建掩码
umask(0);
}
}
}
int main()
{
char *buf = "hello world
";
int fd;
init_daemon();
while(1){
if(fd = open("hello.txt",O_CREAT|O_WRONLY|O_APPEND,0600)<0){
perror("open");
exit(-1);
}
write(fd,buf,strlen(buf));
close(fd);
sleep(1);
}
return 0;
}
解决方案九:
这是我写的守护进程
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
//创建守护进程
void init_daemon(){
pid_t pid;
int i;
if(pid = fork()){
//是父进程,结束父进程
exit(0);
}else if(pid < 0){
//fork失败,退出
perror("fork error");
exit(-1);
}else{
//第一个子进程,后台继续执行
setsid();//第一个子进程成为新的会话组长和进程组长并与控制终端分离
if(pid = fork()){
//是第一个子进程,结束
exit(0);
} else if(pid < 0){
perror("fork");
exit(-1);
}else{
//第二个子进程,继续,其不再是会话组长
for(i = 0; i < getdtablesize();i++){
//关闭打开的文件描述符
close(i);
}
//重设文件创建掩码
umask(0);
}
}
}
int main()
{
char *buf = "hello world
";
int fd;
init_daemon();
while(1){
if(fd = open("hello.txt",O_CREAT|O_WRONLY|O_APPEND,0600)<0){
perror("open");
exit(-1);
}
write(fd,buf,strlen(buf));
close(fd);
sleep(1);
}
return 0;
}
解决方案十:
不好意思,点多了几下,能删除么
时间: 2024-09-20 17:57:20