我有一个C++类用于启动和与外部进程通信(有点类似于Qt的QProcess - 我们不能使用Qt,因为我们正在开发一个小型嵌入式系统).它使用pipe和dup2系统调用在父进程和子进程之间建立链接.问题是 - 它不适用于ssh,scp和其他期望密码的程序.我已经使用了ssh,它似乎打开/ dev/tty并以某种方式使用它来从命令行读取密码.有没有办法从我的类输入密码或检测到应用程序是否期望从stdin以外的其他来源输入(根本不必是可移植的)?
我有几个C++类,我想使用autotools和libtool将它们编译成一个共享库.这些是我的configure.ac和Makefile.am文件:
configure.ac:
AC_PREREQ(2.67)
AC_INIT(somelib.so, 1.0, someone@somewhere.com)
AC_LANG(C++)
AM_INIT_AUTOMAKE(somelib, 1.0)
LT_INIT([disable-static])
AM_DISABLE_STATIC
AM_PROG_LIBTOOL
AC_LIBTOOL_DLOPEN
AC_PROG_LIBTOOL
AC_CONFIG_SRCDIR([Logger.cpp])
AC_CONFIG_HEADER([config.h])
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AC_SUBST(LIBTOOL_DEPS)
AC_LTDL_DLLIB
AC_PROG_RANLIB
AC_SUBST(LIBTOOL_DEPS)
AC_LTDL_DLLIB
# Checks for libraries.
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([cstring unistd.h pthread.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T
# Checks for library functions.
AC_FUNC_MALLOC
AC_FUNC_REALLOC
AC_TYPE_SIGNAL
AC_CHECK_FUNCS([mkdir strdup dup2])
AC_CHECK_LIB(pthread, pthread_create, [], [ echo "ERROR!: libpthread not found!"; exit -1], [])
AC_CHECK_LIB(xml2, htmlReadMemory, [], [ echo …Run Code Online (Sandbox Code Playgroud) 我想知道linux进程是否可以调用位于另一个进程内存中的代码?
假设我们在进程A中有一个函数f(),我们希望进程B调用它.我想到的是使用带有MAP_SHARED和PROT_EXEC标志的mmap映射包含函数代码的内存并将指针传递给B,假设f()不会调用A二进制中的任何其他函数.它会工作吗?如果是,那么如何确定内存中f()的大小?
===编辑===
我知道,共享库将完全这样做,但我想知道是否可以在进程之间动态共享代码.