flags 如果传入O_NONBLOCK,读写管道时就不会阻塞了。
具体的你man 一下就知道
//创建server管道。mkfifo(Server_FIFO_Name,0777)
//打开服务器端口,等待读取。此时如果客户端还未写入数据服务器端会被阻塞。
server_fifo_fd = open(Server_FIFO_Name , O_RDONLY)
if( -1 == server_fifo_fd ){
fprintf( stderr , "Server fifo failure\n" )
exit(EXIT_FAILURE)
}
//从管道中读取数据。
read_res = read ( server_fifo_fd , &my_data , sizeof(my_data))
if(read_res >0){
//将字符串翻转.
reverse ( my_data.str )
//将客户端的pid号加入回送管道文件名中.
sprintf ( client_fifo, Client_FIFO_Name , my_data.client_pid)
//打开回送管道。
client_fifo_fd = open ( client_fifo , O_WRONLY )
if( -1 != client_fifo_fd ){
//向管道中写入返回的数据.
write ( client_fifo_fd , &my_data, sizeof(my_data))
close ( client_fifo_fd )
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)