小编Poo*_*rna的帖子

如何捕获从init.d运行的linux守护进程的pid

我已经通过存储rc5.d的脚本文件运行二进制文件(用C++编写)启动了一个服务守护进程.

但我不知道如何捕获守护进程的pid并将其存储在/var/run/.pid中的pid文件中.这样我就可以使用pid进行终止.我怎样才能做到这一点?

linux pid

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

虚函数对象切片

我的问题是参考这个问题,它解释了虚拟函数如何在对象切片的情况下工作,最终调用基类虚函数和维基百科文章解释下面代码的派生类的虚拟表布局

    class A{

    public:
     virtual void func(){ cout<<"\n In A:func";}
    };

    class B:public A{

    public:
     virtual void func(){ cout<<"\n In B:func";}
    };

   main(){
    A *ptr1 = new B();

    A oA = *ptr1;

    oA.func(); 
  }




      DerviedClassObjectB:
         +0: pointer to virtual method table of B 

       virtual method table of B:
         +0: B::func
Run Code Online (Sandbox Code Playgroud)

上面的程序输出"在A :: func".

但是如果没有用于B类的虚拟表知道基类A :: func,最终会调用A :: func

c++ virtual function vtable

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

Linux 中的 Windows 命名管道替代方案

我们正在将现有的 Windows 代码移植到 Linux。我们使用 ACE 作为抽象层。我们使用 Windows 命名管道与多个客户端进行通信并执行重叠操作。

在 linux 中与此等效的是什么。我检查了 linux 命名管道(FIFO),但它们似乎只支持一个客户端和一个服务器,并且不支持重叠 IO。

你能指导我吗?

linux named-pipes overlapped-io

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

4
推荐指数
2
解决办法
8374
查看次数

如何在32位操作系统上运行64位应用程序

我使用32位openSUSE操作系统,我使用交叉编译器构建64位应用程序(它不支持构建32个应用程序),因为我们的软件将部署在64位操作系统的机器上.由于目标测试并不总是可行的,无论如何都要在我的32位操作系统上运行这些应用程序.

linux 64-bit

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

使用函数的默认值分配参数

我有线程生成函数,它接受许多在声明中具有默认值的参数.

int spawn(funcptr func,void arg = 0,int grp_id = 1,const char threadname);

我想初始化第一个参数func和最后一个参数线程名称和剩余变量分配其默认值.

spawn(myfunc,"My Thread");

我怎样才能做到这一点.

c++ parameters function

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

内存对齐

我已经理解为什么内存应该根据总线的数据宽度与4字节和8字节对齐.但以下声明让我感到困惑

"IoDrive要求使用O_DIRECT在设备上执行的所有I/O必须是512字节的对齐,并且大小为512字节的倍数."

将地址对齐到512字节的需要是什么.

c operating-system memory-alignment

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

GIT Pull 删除了我的提交

在 git pull 之后,我做了 git reset hard 以在合并之前撤消与提交 ID 的合并。不知何故,我的整个提交都消失了,我也看不到历史中的提交。但是我有提交 id ,在 git show 命令上我可以看到我的更改。

我怎样才能取回我的更改以及如何跟踪我犯了什么错误

git git-merge git-reset git-commit

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

内存泄漏使用malloc失败

我正在编写一个泄漏内存(主内存)的程序来测试系统在低系统内存和交换内存时的行为方式.我们使用以下循环定期运行并泄漏内存

main(int argc, char* argv[] )  
{
   int arg_mem = argv[1];

        while(1)
        {
          u_int_ptr =(unsigned int*)  malloc(arg_mem * 1024 * 1024);

        if( u_int_ptr == NULL )
           printf("\n leakyapp Daemon FAILED due to insufficient available memory....");

          sleep( arg_time );
        }

}
Run Code Online (Sandbox Code Playgroud)

上面的循环运行一段时间并打印消息"leakyapp Daemon FAILED由于可用内存不足......".但是当我运行命令"free"时,我可以看到运行该程序对主内存或交换没有影响.

难道我做错了什么 ?

c linux memory

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

约束违规例外ORA-00001

我正在使用Oracle数据库.我们看到我们的服务电话频繁失败.当我查看日志时,我看到桌子上有例外情况

java.sql.BatchUpdateException:ORA-00001:违反了唯一约束(DBSCHEMA.IDX_CO_DETAILS).

我已经检查了表中索引名称DBSCHEMA.IDX_CO_DETAILS的索引.

它不包含任何列(INCLUDE_COLUMN为null).我怎么知道这个约束是什么?它是主键约束吗?

我们正在使用hibernate进行ORM.下面是hibernate上下文中的后向跟踪

Caused by: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
    at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
    at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
    at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
    at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
Run Code Online (Sandbox Code Playgroud)

oracle indexing hibernate ora-00001

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