system("umount /usr/local/thunder/medias/");
system("mount /dev/hda2 /usr/local/thunder/medias/");
一保证文件被传送的正确的位子,可是一段时间大概是460次的时候,发现system()函数不执行了。
这么会事啊???
请高手帮忙。
107 个解决方案
#1
你这不是折腾内核嘛?
就不能设计好点的逻辑,只挂载一次?
就不能设计好点的逻辑,只挂载一次?
#2
不能频繁挂载吧。。。前几天看见一个帖子也是说频繁挂载最后就不能用了,像2l说的,设计好点吧
#3
查看日志。找原因。
#4
看到一句话“一般ext3的文件系统默认在挂载32次或者半年就需要检查一次”。可能是因为频繁挂载的导致系统检查文件系统的原因,是system不能使用吧
#5
http://it.kswchina.com/Linux/zh/415486.html
频繁挂载对硬件的损坏,可能系统默认有保护硬盘功能吧。愚见
频繁挂载对硬件的损坏,可能系统默认有保护硬盘功能吧。愚见
#6
不明白为什么要重新挂载多次
如果没有刷新,可以试试 system("sync");
#7
真没必要这样搞吧,我挂载多了,挂不上都是直接重启。
#8
问题是跟了一下,system返回 -1 之后的system全都不管用了。怎么解决呢。
#9
根本问题是你要修改逻辑,不要重复挂载
#10
检查 mount 的提示信息和返回值。
#11
修改后不挂载了。system ("reboot")返回 -1 为什么???
#12
什么地方会影响system的使用。
#13
不挂载也出错啊,一个SYSTEM出错了,以后的都不能用了。这怎么办。
#14
本身 就有 mount 函数,不需要用system。
除非万不得已,否则不用system。
除非万不得已,否则不用system。
#15
查出点线索了,用showmem()函数发现内存有泄露的地方。程序很长,有什么好办法找到啊。
#16
用Valgrind
#17
反复挂载就是个很糟糕的设计,即使现在查出问题出在哪里,将来在其他地方同样会泄漏。
#18
愚见:
sync也并不能完全保证文件写入磁盘,仅仅将内容放入写队列中了,并不等待实际写磁盘操作结束。
但是频繁卸载和安装一段时间之后,确实会导致系统检查磁盘。
fsync只对文件描述指定的单一文件起作用,并且等待写磁盘操作结束。
建议使用fsync!
sync也并不能完全保证文件写入磁盘,仅仅将内容放入写队列中了,并不等待实际写磁盘操作结束。
但是频繁卸载和安装一段时间之后,确实会导致系统检查磁盘。
fsync只对文件描述指定的单一文件起作用,并且等待写磁盘操作结束。
建议使用fsync!
#19
fsync 试了,还是不行。
#20
Valgrind 网上说,这个工具只能处理简单的程序。Insure++ 更好,谁用过呀,给点资料呗。
问了一天啦,谢谢大家的帮助。
问了一天啦,谢谢大家的帮助。
#21
关注
#22
如果只是要同步写操作,sync 足够了……
According to the standard specification (e.g., POSIX.1-2001), sync() schedules the writes, but may return before
the actual writing is done. However, since version 1.3.20 Linux does actually wait. (This still does not guaran‐
tee data integrity: modern disks have large caches.)
自从 1.3.20 起,就已经改成等待同步结束再返回了。
According to the standard specification (e.g., POSIX.1-2001), sync() schedules the writes, but may return before
the actual writing is done. However, since version 1.3.20 Linux does actually wait. (This still does not guaran‐
tee data integrity: modern disks have large caches.)
自从 1.3.20 起,就已经改成等待同步结束再返回了。
#23
程序跑到结束的时候,printf还能用。SYSTEM就不能用了。用showmem看了一下。33XXXXXX 到了 25XXXXXX 按说这也够执行SYSTEM 的啊。真不明白。
#24
真的 假的!
#25
不错真不错
#26
study
#27
感觉有点晕 呵呵正在学习仲
#28
不知道
#29
学习!
#30
上百度啊
#31
gz
#32
呵呵,逻辑问题
#33
有知道system();在什么情况下无法执行吗??有内存要求最低是多少?
#34
system()->fork() or vfork(). It will cause many zombie process. And system process number is a limited number. So if you call system() many times. It will cause the system crash.
#35
try unlink().
#36
看到一句话“一般ext3的文件系统默认在挂载32次或者半年就需要检查一次”。可能是因为频繁挂载的导致系统检查文件系统的原因,是system不能使用吧
#37
是
#38
你这不是折腾内核嘛?
就不能设计好点的逻辑,只挂载一次?
就不能设计好点的逻辑,只挂载一次?
#39
jjjff
#40
同意36楼
#41
我是来学习的
#42
顶
#43
学习了。。。
#44
是
#45
学习
#46
mark
#47
什么地方会影响system的使用,我是来学习的
#48
顶!!!!!!
#49
直接调用系统函数 system(),只建议偶尔用用,不建议频繁使用,尤其是在循环语句里反复调用,因为里面的命令不是原子性的操作,可能有很多想不到的情况发生。
要实现某些方面的功能,最好的方式就是查看源代码(Linux开源就是有这个好处啊,为什么不呢),比如
system("mount ...");
system("cp ....");
我们可以直接在utils包里直接找到mount cp 等命令实现的源代码,进而可以发现他们调用了哪些更底层的系统函数。
要实现某些方面的功能,最好的方式就是查看源代码(Linux开源就是有这个好处啊,为什么不呢),比如
system("mount ...");
system("cp ....");
我们可以直接在utils包里直接找到mount cp 等命令实现的源代码,进而可以发现他们调用了哪些更底层的系统函数。
#50
好
#1
你这不是折腾内核嘛?
就不能设计好点的逻辑,只挂载一次?
就不能设计好点的逻辑,只挂载一次?
#2
不能频繁挂载吧。。。前几天看见一个帖子也是说频繁挂载最后就不能用了,像2l说的,设计好点吧
#3
查看日志。找原因。
#4
看到一句话“一般ext3的文件系统默认在挂载32次或者半年就需要检查一次”。可能是因为频繁挂载的导致系统检查文件系统的原因,是system不能使用吧
#5
http://it.kswchina.com/Linux/zh/415486.html
频繁挂载对硬件的损坏,可能系统默认有保护硬盘功能吧。愚见
频繁挂载对硬件的损坏,可能系统默认有保护硬盘功能吧。愚见
#6
不明白为什么要重新挂载多次
如果没有刷新,可以试试 system("sync");
#7
真没必要这样搞吧,我挂载多了,挂不上都是直接重启。
#8
问题是跟了一下,system返回 -1 之后的system全都不管用了。怎么解决呢。
#9
根本问题是你要修改逻辑,不要重复挂载
#10
检查 mount 的提示信息和返回值。
#11
修改后不挂载了。system ("reboot")返回 -1 为什么???
#12
什么地方会影响system的使用。
#13
不挂载也出错啊,一个SYSTEM出错了,以后的都不能用了。这怎么办。
#14
本身 就有 mount 函数,不需要用system。
除非万不得已,否则不用system。
除非万不得已,否则不用system。
#15
查出点线索了,用showmem()函数发现内存有泄露的地方。程序很长,有什么好办法找到啊。
#16
用Valgrind
#17
反复挂载就是个很糟糕的设计,即使现在查出问题出在哪里,将来在其他地方同样会泄漏。
#18
愚见:
sync也并不能完全保证文件写入磁盘,仅仅将内容放入写队列中了,并不等待实际写磁盘操作结束。
但是频繁卸载和安装一段时间之后,确实会导致系统检查磁盘。
fsync只对文件描述指定的单一文件起作用,并且等待写磁盘操作结束。
建议使用fsync!
sync也并不能完全保证文件写入磁盘,仅仅将内容放入写队列中了,并不等待实际写磁盘操作结束。
但是频繁卸载和安装一段时间之后,确实会导致系统检查磁盘。
fsync只对文件描述指定的单一文件起作用,并且等待写磁盘操作结束。
建议使用fsync!
#19
fsync 试了,还是不行。
#20
Valgrind 网上说,这个工具只能处理简单的程序。Insure++ 更好,谁用过呀,给点资料呗。
问了一天啦,谢谢大家的帮助。
问了一天啦,谢谢大家的帮助。
#21
关注
#22
如果只是要同步写操作,sync 足够了……
According to the standard specification (e.g., POSIX.1-2001), sync() schedules the writes, but may return before
the actual writing is done. However, since version 1.3.20 Linux does actually wait. (This still does not guaran‐
tee data integrity: modern disks have large caches.)
自从 1.3.20 起,就已经改成等待同步结束再返回了。
According to the standard specification (e.g., POSIX.1-2001), sync() schedules the writes, but may return before
the actual writing is done. However, since version 1.3.20 Linux does actually wait. (This still does not guaran‐
tee data integrity: modern disks have large caches.)
自从 1.3.20 起,就已经改成等待同步结束再返回了。
#23
程序跑到结束的时候,printf还能用。SYSTEM就不能用了。用showmem看了一下。33XXXXXX 到了 25XXXXXX 按说这也够执行SYSTEM 的啊。真不明白。
#24
真的 假的!
#25
不错真不错
#26
study
#27
感觉有点晕 呵呵正在学习仲
#28
不知道
#29
学习!
#30
上百度啊
#31
gz
#32
呵呵,逻辑问题
#33
有知道system();在什么情况下无法执行吗??有内存要求最低是多少?
#34
system()->fork() or vfork(). It will cause many zombie process. And system process number is a limited number. So if you call system() many times. It will cause the system crash.
#35
try unlink().
#36
看到一句话“一般ext3的文件系统默认在挂载32次或者半年就需要检查一次”。可能是因为频繁挂载的导致系统检查文件系统的原因,是system不能使用吧
#37
是
#38
你这不是折腾内核嘛?
就不能设计好点的逻辑,只挂载一次?
就不能设计好点的逻辑,只挂载一次?
#39
jjjff
#40
同意36楼
#41
我是来学习的
#42
顶
#43
学习了。。。
#44
是
#45
学习
#46
mark
#47
什么地方会影响system的使用,我是来学习的
#48
顶!!!!!!
#49
直接调用系统函数 system(),只建议偶尔用用,不建议频繁使用,尤其是在循环语句里反复调用,因为里面的命令不是原子性的操作,可能有很多想不到的情况发生。
要实现某些方面的功能,最好的方式就是查看源代码(Linux开源就是有这个好处啊,为什么不呢),比如
system("mount ...");
system("cp ....");
我们可以直接在utils包里直接找到mount cp 等命令实现的源代码,进而可以发现他们调用了哪些更底层的系统函数。
要实现某些方面的功能,最好的方式就是查看源代码(Linux开源就是有这个好处啊,为什么不呢),比如
system("mount ...");
system("cp ....");
我们可以直接在utils包里直接找到mount cp 等命令实现的源代码,进而可以发现他们调用了哪些更底层的系统函数。
#50
好