小编Mar*_*ser的帖子

在运行时在Mac OS X上设置进程名称

我想,因为它似乎在改变我的进程的名称ps,并Activity Monitor在运行时.我发现有几个笔记说没有可移植的方法(我不关心).

这是我尝试过的.这些方法都不适合我.

  • 改变argv[0](似乎是在某些Unix系统上的方式)
  • 调用 [[NSProcessInfo processInfo] setProcessName:@"someName"]
  • 调用setprogname(调用getprogname返回我设置的名称,但这是无关紧要的)

我还读到了一个被调用的函数setproctitle,stdlib.h如果它可用,应该定义它,但它不存在.

必须有一种方法可以实现这一点,因为QTKitServer-- QuickTime Player X的无面解码器 - 在其进程名称中具有相应的QuickTime Player的PID.

有没有人知道如何做到这一点?我非常喜欢使用Core Foundation或POSIXy方法来实现Objective-C方法.

谢谢,

马尔科

编辑:如果它有任何相关性,我使用的是Mac OS X 10.6.5和Xcode 3.2.5

macos posix process

19
推荐指数
2
解决办法
7085
查看次数

POSIX套接字:如何检测通过Telnet发送的Ctrl-C?

简短问题
在服务器端处理通过Telnet发送的Ctrl-C事件的正确方法是什么?

长问题
在套接字上调用recv()之后,我想适当地处理一些情况.其中之一是在收到Ctrl-C时返回某个错误代码.检测到这种情况的正确方法是什么?以下工作,但它似乎不正确:

size_t recv_count;
static char ctrl_c[5] = {0xff, 0xf4, 0xff, 0xfd, 0x06};

recv_count = recv(socket, buffer, buffer_size, 0);

if (recv_count == sizeof(ctrl_c) &&
    memcmp(buffer, ctrl_c, sizeof(ctrl_c) == 0)
{
    return CTRL_C_RECEIVED;
}
Run Code Online (Sandbox Code Playgroud)

我在这个 UNIX Socket FAQ 的旁注中找到了对Ctrl-C的评论:

[...](顺便说一下,带外通常也用于ctrl-C).

据我所知,接收带外数据是使用recv()完成的,并将某个标志作为最后一个参数.但是,当我在上面的代码中使用recv()等待数据时,我无法同时读取带外数据.除此之外,我正在使用recv()获得一些没有oob-flag的东西.

c sockets terminal copy-paste telnet

5
推荐指数
1
解决办法
1641
查看次数

标签 统计

c ×1

copy-paste ×1

macos ×1

posix ×1

process ×1

sockets ×1

telnet ×1

terminal ×1