本文目录一览:
- 1、linux下c/c++怎么调用js api
- 2、C语言中,“js”用什么输出?
- 3、如何使用c 实现javascript的escape和unescape函数
- 4、在C++中怎么调用一个js中的方法
linux下c/c++怎么调用js api
system(执行shell 命令)
相关函数 fork,execve,waitpid,popen
表头文件 #includestdlib.h
定义函数 int system(const char * string);
函数说明 system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。
返回值 如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。若参数string为空指针(NULL),则返回非零值。如果system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为system()调用/bin/sh失败所返回的127,因此最好能再检查errno 来确认执行成功。
附加说明 在编写具有SUID/SGID权限的程序时请勿使用system(),system()会继承环境变量,通过环境变量可能会造成系统安全的问题。
范例 #includestdlib.h
main()
{
system(“ls -al /etc/passwd /etc/shadow”);
}
执行 -rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd
-r--------- 1 root root 572 Sep 2 15 :34 /etc/shadow
C语言中,“js”用什么输出?
把标签 “htmlscript/div” 中的关键字符转义。
此处转义的关键字主要是 和 。
关键字[]转义为 gt; [移除中间空格]
关键字[]转义为 lt;[移除中间空格]
例如html标签转义后为 lt;html gt;
然后调用 document.write(" lt;html gt;") 显示在页面上。
如何使用c 实现javascript的escape和unescape函数
escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。语法escape(string)参数描述string必需。要被转义或编码的字符串。返回值已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。说明该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。
提示和注释提示:可以使用 unescape() 对 escape() 编码的字符串进行解码。用法与escape()一样。
举例:
script type="text/javascript"
document.write(escape("Visit W3School!") + "br /")
document.write(escape("?!=()#%"))
/script
输出:
Visit%20W3School%21
%3F%21%3D%28%29%23%25%26
注释:ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。
在C++中怎么调用一个js中的方法
例如一个test.js内容如下:
function main( input )
{
return input;
}
在C++中调用方法如下:
// vcJscript.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#import "C:/windows/system32/msscript.ocx" // msscript.ocx
using namespace MSScriptControl;
#include fstream
#include string
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr = CoInitialize(NULL);
IScriptControlPtr pScriptControl(__uuidof(ScriptControl));
pScriptControl-Language = "JavaScript";
//pScriptControl-AllowUI = TRUE;
fstream file;
file.open( "test.js" );
string strFileContent, strTemp;
char szTemp[1024]="";
do
{
file.read(szTemp, 1024);
strFileContent.append( szTemp );
memset( szTemp, 0, 1024 );
}
while ( !file.fail() );
file.close();
pScriptControl-AddCode(strFileContent.c_str());
VARIANT A = pScriptControl-Eval("main(4);");
int iRet = A.intVal;
return 0;
}
脚本控件有四种方法。其中之一是 Run(),运行子例程或函数。在调用此方法之前,指定的脚本语言、 设置 AllowUI,并将下面的脚本添加到脚本控件:
//---------------------- Begin ---------------------------
#include stdio.h
#import "C:/winnt/system32/msscript.ocx" // msscript.ocx
using namespace MSScriptControl;
int main(void)
{
HRESULT hr = CoInitialize(NULL);
IScriptControlPtr pScriptControl(__uuidof(ScriptControl));
// Create a VARIANT array of VARIANTs which hold BSTRs
LPSAFEARRAY psa;
SAFEARRAYBOUND rgsabound[] = { 3, 0 }; // 3 elements, 0-based
int i;
psa = SafeArrayCreate(VT_VARIANT, 1, rgsabound);
if (!psa)
{
return E_OUTOFMEMORY;
}
VARIANT vFlavors[3];
for (i = 0; i 3; i++)
{
VariantInit(vFlavors[i]);
V_VT(vFlavors[i]) = VT_BSTR;
}
V_BSTR(vFlavors[0]) = SysAllocString(OLESTR("Vanilla"));
V_BSTR(vFlavors[1]) = SysAllocString(OLESTR("Chocolate"));
V_BSTR(vFlavors[2]) = SysAllocString(OLESTR("Espresso Chip"));
long lZero = 0;
long lOne = 1;
long lTwo = 2;
// Put Elements to the SafeArray:
hr = SafeArrayPutElement(psa, lZero,vFlavors[0]);
hr = SafeArrayPutElement(psa, lOne,vFlavors[1]);
hr = SafeArrayPutElement(psa, lTwo,vFlavors[2]);
// Free Elements from the SafeArray:
for(i=0;i3;i++)
{
SysFreeString(vFlavors[i].bstrVal);
}
// Set up Script control properties
pScriptControl-Language = "JScript";
pScriptControl-AllowUI = TRUE;
pScriptControl-AddCode(
"function MyStringFunction(Argu1,Argu2,Argu3)/
{ return /"hi there/" ;}" );
// Call MyStringFunction with the two args:
_variant_t outpar = pScriptControl-Run("MyStringFunction", psa);
// Convert VARIANT to C string:
_bstr_t bstrReturn = (_bstr_t)outpar;
char *pResult = (char *)bstrReturn;
// Print the result out:
printf("func=%s/n",pResult);
// Clean up:
SafeArrayDestroy(psa);
CoUninitialize();
return(0);
}