我希望我的C程序即使在非常老的Unix操作系统上也可以移植,但问题是我正在使用pthreads和动态分配(malloc).我所知道的所有Unix都有一个线程安全的malloc(Linux,*BSD,Irix,Solaris),但是C标准并不能保证这一点,而且我确定有很老的版本,这是不正确的.
那么,是否有一些平台列表需要使用互斥锁来包装malloc()调用?我打算编写一个./configure测试,检查当前平台是否在该列表中.
另一种选择是测试malloc()的线程安全性,但我知道没有确定性的方法来做到这一点.关于这个的任何想法呢?
关于缓冲区溢出,以下哪一项是安全的?
char buf[10] = {0};
scanf("%10s", buf);
Run Code Online (Sandbox Code Playgroud)
要么
char buf[10] = {0};
scanf("%9s", buf);
Run Code Online (Sandbox Code Playgroud)
从我读过的内容来看,我要去的是第二个(sizeof减去一个),但问题非常微妙,而且我已经看到了代码建议.有志于引用标准的志愿者吗?
我对 python 很陌生。我想知道,使用时subprocess.Popen
需要关闭连接还是子进程自动关闭连接?
process = subprocess.Popen(["mysql", "-uroot", "-ppassword", "database"],
stdin = subprocess.PIPE,
stdout = subprocess.PIPE,
stderr = subprocess.PIPE)
process_out, process_err = process.communicate(file("test.sql").read())
print process_out
Run Code Online (Sandbox Code Playgroud)