小编Til*_*ütz的帖子

如何阻止Linux上的"不间断"进程?

我有一个VirtualBox进程,我试图杀死它(-KILL/-ABORT),但没有成功.父pid是1(init).

top显示D记录为"不间断睡眠"的过程.

strace 没有表现出来.

我怎么能摆脱这个?它阻止我卸载vbox内核驱动程序以加载更新的驱动程序.

linux

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

为什么protocol_*方法不适用于Linux上的Clang +现代GCC-Runtime?

我试图将我的一些Objective-C项目从GCC切换到Linux上的Clang.我使用了GCC 4.6.2运行时,因为Clang编译器没有附带一个.编译和链接工作,但使用protocol_*方法时,它们不起作用.

以下示例适用于GCC,但与Clang不符合预期:

#include <objc/runtime.h>
#include <stdio.h>

@protocol MyProtocol
+ aClassMethod;
- anInstanceMethod;
@end

void doIt(Protocol *p, SEL sel)
{
    printf("the protocol: %p\n", p);
    if (!p) return;
    printf("the protocol's name: %s\n", protocol_getName(p));
    struct objc_method_description d = protocol_getMethodDescription(p, sel, YES, YES);
    printf("required: YES instance: YES ? %p\n", d.name);
    d = protocol_getMethodDescription(p, sel, YES, NO);
    printf("required: YES instance: NO ? %p\n", d.name);
    d = protocol_getMethodDescription(p, sel, NO, YES);
    printf("required: NO instance: YES ? %p\n", d.name);
    d = protocol_getMethodDescription(p, sel, NO, …
Run Code Online (Sandbox Code Playgroud)

objective-c clang objective-c-runtime

12
推荐指数
1
解决办法
481
查看次数

如何使用openssl C API验证pkcs#12证书(.PXF)的密码?

我有.pxf(AFAIK PKCS#12)证书.如何使用openssl C API确认此证书的给定密码?

c openssl pkcs#12

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

如何解释objective-c类型说明符(例如,由method_copyReturnType()返回)?

鉴于我有一个由method_copyReturnType()返回的类型说明符.在随GCC提供的GNU运行时中,有各种方法可以使用类似的类型说明符objc_sizeof_type(),objc_alignof_type()以及其他类型.

使用Apple运行时时,没有这样的方法.

如何使用Apple运行时解释类型说明符字符串(例如获取类型的大小)而不为自己实现if/else或case开关?

[更新]

我无法使用Apple Foundation.

objective-c objective-c-runtime

6
推荐指数
2
解决办法
1358
查看次数

Ruby/Glibc coredump(双免费或腐败)

我正在使用我自己在Ruby中编写的分布式持续集成工具.它使用Mike Perham的"政治"分支来分配任务."政治"模块正在为mDNS部分使用线程.

我偶尔遇到一个我不明白的核心转储:

*** glibc detected *** ruby: double free or corruption (fasttop): 0x086d8600 ***
======= Backtrace: =========
/lib/libc.so.6[0xb7cef494]
/lib/libc.so.6[0xb7cf0b93]
/lib/libc.so.6(cfree+0x6d)[0xb7cf3c7d]
/usr/lib/libruby18.so.1.8[0xb7e8adf8]
/usr/lib/libruby18.so.1.8(ruby_xmalloc+0x85)[0xb7e8b395]
/usr/lib/libruby18.so.1.8[0xb7e5065e]
...
/usr/lib/libruby18.so.1.8[0xb7e717f4]
/usr/lib/libruby18.so.1.8[0xb7e74296]
/usr/lib/libruby18.so.1.8(rb_yield+0x27)[0xb7e7fb57]
======= Memory map: ========
...
Run Code Online (Sandbox Code Playgroud)

我在Gentoo上运行并使用"-gdbg"重建Ruby和Glibc并关闭条带以获得有意义的核心:

...
Core was generated by `ruby /home/develop/dcc/bin/dcc-worker'.
Program terminated with signal 6, Aborted.
#0  0xb7f20410 in __kernel_vsyscall ()
(gdb) bt
#0  0xb7f20410 in __kernel_vsyscall ()
#1  0xb7cacb60 in *__GI___open_catalog (cat_name=0x6 <Address 0x6 out of bounds>, nlspath=0xbf9d6f00 " ", env_var=0x0, catalog=0x1) at open_catalog.c:237
#2  0xb7cae498 in __sigdelset …
Run Code Online (Sandbox Code Playgroud)

ruby linux multithreading coredump glibc

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

forwardInvocation到其他类而不是实例

我有一个外观单例,我想将一些类方法调用转发给一些"静态"类.

乍一看,forwardInvocation:似乎是一个可行的解决方案,然而,NSInvocationinvokeWithTarget:而且setTarget:只接受一个id,即一个指向实例,而不是一类本身.我尝试将其[MyTargetClass class]作为目标移交,但是当我在[Facade someForwardedMethod]某个地方打电话时,我仍然会收到"没有已知的类方法[...]"错误.当我打电话时,[[Facade sharedInstance] someForwardedMethod]我得到一个"No visible @interface [...]声明选择器[...]"错误.

当然,我知道我还需要重写respondsToSelector:methodSignatureForSelector:,所以我的代码如下所示:

- (BOOL)respondsToSelector:(SEL)aSelector {
    if ([super respondsToSelector:aSelector]) {
        return YES;
    } else {
        return [MyTargetClass respondsToSelector:aSelector];
    }
}

- (NSMethodSignature *)methodSignatureForSelector:(SEL)selector {
    NSMethodSignature* signature = [super methodSignatureForSelector:selector];
    if (!signature) {
        signature = [MyTargetClass methodSignatureForSelector:selector];
    }
    return signature;
}

- (void)forwardInvocation:(NSInvocation *)anInvocation {

    SEL aSelector = [anInvocation selector];

    if ([MyTargetClass …
Run Code Online (Sandbox Code Playgroud)

objective-c

3
推荐指数
1
解决办法
1462
查看次数

如何确定进程的状态(即它是否是一个僵尸)

如何在Linux下使用C获取有关进程状态的信息(即,如果它是僵尸)?

在阅读了答案之后,我想稍微缩小我的问题:我更喜欢纯C解决方案.在阅读了ps源码(读取/ proc /)后,我认为应该有更好的方法并在这里问:)

c linux process zombie-process

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