我正在研究一个Linux C项目,我在使用文件描述符时遇到了麻烦.
我有一个孤立文件描述符(文件是open()'然后取消链接()'但fd仍然很好)具有只写权限.原始后备文件具有完全权限(使用S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH创建),但是文件是使用O_WRONLY打开的.是否可以复制文件描述符并将副本更改为O_RDWR?
psudo代码:
//open orphan file
int fd = open(fname, O_WRONLY, ...)
unlink(fname)
//fd is still good, but I can't read from it
//...
//I want to be able to read from orphan file
int fd2 = dup(fd)
//----change fd2 to read/write???----
Run Code Online (Sandbox Code Playgroud)
提前致谢!-安德鲁
select()是一个很棒的系统调用.您可以打包任意数量的文件描述符,套接字描述符,管道等,并在输入可用时以同步方式获得通知.
有没有办法创建一个interval/oneshot计时器并与select()一起使用?这将使我免于拥有多个线程用于IO和计时.
快速正则表达式问题.
我试图在python中捕获捕获组的多个实例(不要认为它是特定于python的),但后续捕获似乎覆盖了之前的捕获.
在这个过于简化的示例中,我实际上是在尝试拆分字符串:
x = 'abcdef' r = re.compile('(\w){6}') m = r.match(x) m.groups() # = ('f',) ?!?我想得到
('a', 'b', 'c', 'd', 'e', 'f')
,但因为正则表达式覆盖了后续的捕获,我得到了('f',)
这是正则表达式应该如何表现?有没有办法做我想要的,而不必重复六次语法?
提前致谢!
安德鲁
我有一个简单的客户端/服务器设置.服务器在C中,查询服务器的客户端是Java.
我的问题是,当我通过连接发送带宽密集型数据时,例如视频帧,它会丢弃一半的数据包.我确保在服务器端正确分割udp数据包(udp的最大有效负载长度为2 ^ 16).我验证了服务器正在发送数据包(printf是sendto()的结果).但是java似乎没有获得一半的数据.
此外,当我切换到TCP时,所有视频帧都通过但延迟开始累积,在运行几秒后增加几秒延迟.
我有什么明显的遗失吗?我似乎无法弄清楚这一点.
是否有可以在正在运行的进程中运行性能分析的Linux库?
我有一个相当大的linux程序,它基于脚本.根据脚本,程序可能会有非常不同的行为(和性能问题).最好的是一个低开销性能库,我可以嵌入到同一个进程中,监视并向进程提供关于它自身性能的实时反馈.
Oprofile会非常棒,如果我可以在程序中启动它并将其与该程序隔离开来.从我读过的文档中,似乎不可能.
有谁知道任何这样的图书馆?
谢谢!
安德鲁克洛法斯