标签: posix

如何检测GDB当前进程是否正在运行?

标准方式如下:

if (ptrace(PTRACE_TRACEME, 0, NULL, 0) == -1)
  printf("traced!\n");
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果跟踪当前进程(即使用gdb运行或附加到它),ptrace将返回错误.

但是这有一个严重的问题:如果调用成功返回,gdb可能以后不会附加到它.这是一个问题,因为我没有尝试实现反调试的东西.我的目的是在满足转义时发出'int 3'(即断言失败)并且gdb正在运行(否则我得到一个停止应用程序的SIGTRAP).

每次禁用SIGTRAP并发出'int 3'都不是一个很好的解决方案,因为我正在测试的应用程序可能正在使用SIGTRAP用于其他目的(在这种情况下我还是搞砸了,所以它没关系,但它是事情的原理:))

谢谢

c linux gdb posix

57
推荐指数
7
解决办法
2万
查看次数

为什么只读打开命名管道块?

在使用Python在各种UNIX(Linux,FreeBSD和MacOS X)下处理命名管道(FIFO)时,我注意到了一些奇怪的事情.第一个,也许是最烦人的是尝试打开空闲/空闲FIFO只读将被阻止(除非我使用os.O_NONBLOCK较低级别的os.open()调用).但是,如果我打开它进行读/写,那么我就不会阻塞.

例子:

f = open('./myfifo', 'r')               # Blocks unless data is already in the pipe
f = os.open('./myfifo', os.O_RDONLY)    # ditto

# Contrast to:
f = open('./myfifo', 'w+')                           # does NOT block
f = os.open('./myfifo', os.O_RDWR)                   # ditto
f = os.open('./myfifo', os.O_RDONLY|os.O_NONBLOCK)   # ditto
Run Code Online (Sandbox Code Playgroud)

我只是好奇为什么.为什么打开调用块而不是后续的一些读操作?

另外我注意到非阻塞文件描述符可以表现为Python中的不同行为.在我使用的情况下os.open()os.O_NONBLOCK初始开启操作那么os.read()似乎如果数据还没有准备好文件描述符返回一个空字符串.但是,如果我使用fcntl.fcnt(f.fileno(), fcntl.F_SETFL, fcntl.GETFL | os.O_NONBLOCK)然后os.read引发异常(errno.EWOULDBLOCK)

是否有一些其他标志open()由我的os.open()例子未设置的法线设置?它们有什么不同,为什么?

file-io posix nonblocking named-pipes fifo

57
推荐指数
1
解决办法
2万
查看次数

Linux共享内存:shmget()vs mmap()?

这个线程中,建议使用OP mmap()而不是shmget()在Linux中获取共享内存.我访问了这个页面和这个页面以获得一些文档,但第二个给出了一个模糊的例子mmap().

几乎是一个新手,并且需要在两个进程之间共享一些信息(以文本形式),我应该使用该shmget()方法还是mmap()?为什么?

c linux posix mmap shared-memory

55
推荐指数
2
解决办法
5万
查看次数

我的所有inode都在哪里使用?

如何找出哪些目录负责咀嚼我的所有inode?

最终根目录将负责最大数量的inode,所以我不确定我想要什么样的答案..

基本上,我用完了可用的inode,需要找到一个不需要的目录来剔除.

谢谢,抱歉这个模糊的问题.

unix linux posix inode

53
推荐指数
6
解决办法
7万
查看次数

OSX是POSIX OS吗?

什么使操作系统成为POSIX系统?所有版本的Linux都是POSIX,对吧?OSX怎么样?

linux macos operating-system posix

52
推荐指数
3
解决办法
3万
查看次数

在os.system()期间会导致"IOError:[Errno 9]错误文件描述符"的原因是什么?

我正在使用一个科学软件,包括一个os.system()用于运行另一个科学程序的Python脚本.在子进程运行时,Python在某些时候打印以下内容:

close failed in file object destructor:
IOError: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud)

我相信此消息会在os.system()返回的同时打印出来.

我现在的问题是:

哪种情况会导致这种类型的IOError?它究竟意味着什么?对于已被调用的子进程意味着什么os.system()

python posix subprocess file-descriptor ioerror

52
推荐指数
2
解决办法
12万
查看次数

Ruby中的文件打开模式

我是Ruby的新程序员.有人可以举一个关于用Ruby中的r +,w +,a +模式打开文件的例子吗?他们和r,w,a有什么区别?

请解释一下,并提供一个例子.

ruby posix file

51
推荐指数
1
解决办法
4万
查看次数

打开(2)中的O_SYNC和O_DIRECT标志如何不同/相似?

O_SYNC和O_DIRECT标志的使用和效果非常混乱,并且在平台之间似乎有所不同.从Linux手册页(参见此处的示例),O_DIRECT提供同步I/O,最小化缓存效果,并要求您自己处理块大小对齐.O_SYNC只保证同步I/O. 虽然两者都保证将数据写入硬盘的缓存,但我相信直接I/O操作应该比普通的同步I/O更快,因为它们绕过页面缓存(尽管FreeBSD的open(2)手册页指出使用O_SYNC时,旁路缓存.请参见此处).

O_DIRECT和O_SYNC标志之间究竟有什么区别?一些实现建议使用O_SYNC | O_DIRECT.为什么?

io posix synchronous

49
推荐指数
4
解决办法
6万
查看次数

将datetime转换为POSIX时间

如何将日期时间或日期对象转换为python中的POSIX时间戳?有一些方法可以从时间戳中创建一个日期时间对象,但我似乎没有找到任何明显的方法以相反的方式进行操作.

python datetime posix

47
推荐指数
3
解决办法
3万
查看次数

如何在POSIX中获取脚本目录?

我的bash脚本中有以下代码.现在我想在POSIX中使用它.那么如何转换呢?谢谢.

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )"
Run Code Online (Sandbox Code Playgroud)

bash posix sh

47
推荐指数
1
解决办法
7299
查看次数