我在编写一个服务程序,是对一个后台仿真软件的封装,现在遇到了一个性能问题: 由于仿真软件得到的数据是写成文件的,然后我写的程序去读取这个文件再作处理,频繁读写文件大大降低了程序性能,所以想用共享内存的方式解决。一般书上介绍共享内存都是通过指针或shm_id在两个进程间产生联系,而我用的后台仿真软件是通过system函数以命令行的方式调用的,命令行中指定文件的路径和名称,所以不知道能不能通过fd或filename联系两个进...
看我的测试代码,似乎应该是在创建子进程之后创建epoll的fd,否则程序将会有问题,试将代码中两个CreateWorker函数的调用位置分别调用,一个在创建epoll fd之前,一个在之后,在调用在创建之前的代码会出问题:
服务器端:
[code]
#include
# Redirecting only stderr to a pipe. exec 3>&1 # Save current "value" of stdout. ls -l 2>&1 >&3 3>&- | grep bad 3>&- # Close fd 3 for 'grep' (but not 'ls'). exec 3>&- # Now close it for the remainder of the script. 关于 10个fd 这里 和exec之间的操作 谁能发个 文章 一般 只看...
比较新的系统都提供名为/dev/fd的目录,其目录项是名为0、1、2等的文件。打开文件/dev/fd/n等效于复制描述符n(假定描述符n是打开的)。 在函数中调用: fd=open("/dev/fd/0",mode); 大多数系统忽略所指定的mode,而另外一些则要求mode是所涉及的文件(在这里则是标准输入)原先打开时所使用的mode的子集。因为上面的打开等效于: fd=dup(0); 描述符0和fd共享同一文件表项(见图3-3)。例如,若描述符0被只读打开,那么我们也只对...
我不想用文件来操作,只想通过一个fd来操作! 主要目的就是,用自己的成功信息代替cmd的信息。 然后输出cmd的一堆的错误信息! cmd > /dev/null 2>&6 if [ $? -eq 0 ]; then echo "successfully!" else 6>&1 fi 但是这样出错。
lr-x------ 1 zc zc 64 Feb 3 00:13 0 ->; /dev/null l-wx------ 1 zc zc 64 Feb 3 00:13 1 ->; /home/zc/.xsession-errors lrwx------ 1 zc zc 64 Feb 3 00:13 10 ->; socket:[172144] l-wx------ 1 zc zc 64 Feb 3 00:13 2 ->; /home/zc/.xsession-errors lrwx------ 1 zc zc 64 Feb 3 00:13 3 ->; socket:[323...