1. 程式人生 > >在Sandbox中呼叫系統工具的問題

在Sandbox中呼叫系統工具的問題

在sandbox中要呼叫system的工具,用system函式,NSTask方式有的成功,有的不成功。

成功的例子有:

/usr/sbin/screencapture

/usr/bin/stat

不成功的例子有:

/usr/bin/qlmanage

/usr/bin/shasum

/usr/bin/hexdump

/sbin/ping

在網上找到一下答案

Sandbox and running /usr/bin/purge using system()

in an app that is on the Mac App Store, I was doing the following:

system("/usr/bin/nice -n 20 /usr/bin/purge &> /dev/null &"
);

This worked fine, but now I'm trying to submit a new version, and they're forcing me to enable the Sandbox. However, with the sandbox, that call fails, giving messages like this in the Console:

7/20/1312:58:59.000 AM kernel[0]:Sandbox: sh(28537) deny file-read-data /dev/ttys000
7/20/1312:58:59.968 AM purge[28538
]: bootstrap_look_up():Permission denied 7/20/1312:59:00.000 AM kernel[0]:Sandbox: purge(28538) deny mach-lookup com.apple.appleprofilepolicyd 7/20/1312:59:00.521 AM purge[28538]:<CPDevice.m:3813>Unable to create new counter client.7/20/1312:59:00.523 AM purge[28538]:<CPOSX.m:1188>Unable to get user client so as to poke the kernel
.7/20/1312:59:00.000 AM kernel[0]:Sandbox: purge(28538) deny iokit-open ApplePerformanceCounterManagerUserClient7/20/1312:59:00.000 AM kernel[0]:Sandbox: purge(28538) deny iokit-open AppleProfileUtilitiesUserClient7/20/1312:59:00.000 AM kernel[0]:AppleProfileUtilitiesUserClient: bad busy count (0,-1)7/20/1312:59:00.000 AM kernel[0]:Backtrace0xffffff802d22d4d20xffffff802d231fc90xffffff802ceb31370000

Is there any way to work around this?

相關推薦

Sandbox呼叫系統工具的問題

在sandbox中要呼叫system的工具,用system函式,NSTask方式有的成功,有的不成功。 成功的例子有: /usr/sbin/screencapture /usr/bin/stat 不成功的例子有: /usr/bin/qlmanage /usr/bin/shasum /us

kernel space 呼叫系統呼叫對地址空間檢查

在核心中呼叫系統呼叫,需要使用get_fs,set_fs來對其保護,因為這些函式會檢查引數地址是不是 使用者空間的,但是很顯然,我們是在核心空間中呼叫這些系統呼叫。 #define get_ds() (KERNEL_DS) 可以看到這裡的get_fs 直接返回的是當前程序的地址限制,使用者程序和

C語言呼叫系統命令(system popen...)

1、system(執行shell 命令) 相關函式 fork,execve,waitpid,popen 表頭檔案 #include<stdlib.h> 定義函式 int system(const char * string); 函式說明 system()會呼

zabbix--觸發器呼叫系統內部函式

引數 描述 Name 觸發器名稱。這個名稱可能包含支援的macros:{HOST.HOST}, {HOST.NAME}, {HOST.CONN}, {HOST.DNS}, {HOST.IP}, {ITEM.VALU

18、android呼叫系統自帶檔案管理器並返回選中檔案的路徑

思路: 通過Android API呼叫系統自帶的檔案瀏覽器選取檔案獲得URI,然後將URI轉換成file,從而得到file。 import android.annotation.SuppressLint;import android.app.Activity;impo

awk呼叫系統命令批量處理

工作中經常遇到在輸入一堆檔名的條件下,將其移動或者刪除或者複製。由於輸入是個檔名的集合,而不是單個檔案,因此不能直接用cp或者mv命令,可以通過awk的逐行處理的功能來處理這種情況。以下是一個例子: $ grep -r 'TE' * | cut -d " " -f3 | a

關於android呼叫系統拍照,返回圖片是旋轉90度..

由於專案的需要,沒有自定義拍照功能,僅僅呼叫了系統的拍照程式..但是出現了一個問題,就是拍照完成顯示圖片居然是被旋轉的圖片....解決辦法:/** * 獲取圖片的旋轉角度,有些系統把拍照的圖片旋轉了,有的沒有旋轉 */ int degree

在Android系統呼叫系統前置攝像頭

    從Android 2.3 Gingerbread開始,原生支援前置攝像頭。下面我們看看如何在程式裡來呼叫前置的攝像頭。    第一種方式是採用MediaStore,呼叫系統原生的相機。 Intent intent = new Intent(MediaStore.

android開發呼叫系統自帶的檔案選擇器遇到的一些問題

1.呼叫系統的檔案瀏覽器然後進入檔案管理器選擇文字檔案後,直接回到檔案瀏覽器頁面造成文字檔案無法選擇 開始時候使用的方法: Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("*/*"

BCP工具的使用以及C++,SQL server資料庫呼叫命令列的方法

BCP工具使用: BCP是由SYBASE公司提供的,專門用於資料庫表一級資料備份的工具。 主要引數如下: 基本用法: 遠端地址1的資料庫表student 匯出到本地(遠端ip1(10.189.1.1) ): bcp run.dbo.student out "c:\student

Python呼叫自然語言處理工具HanLP手記

HanLP方法封裝類: 1. # -*- coding:utf-8 -*- 2. # Filename: main.py 3. 4.from jpype import * 5.  5.startJVM(getDefaultJVMPath(), "-Djava.class.path=C:\h

通過qt在linux系統下對c++進行封裝獲得so庫並在在其他程式呼叫共享庫

在qt下封裝.so 開啟qt新建專案,選擇這個 2、生成了兩個.h檔案和一個main.c檔案,這裡參照.h檔案構建標頭檔案,宣告函式變數等,也就是展現給客戶使用的部分。 之後在.c檔案中對自己的函式進行定義 點編譯,就可以了,可以看到在專案資料夾中生成了.s

C++呼叫系統應用程式的方法的整理總結

一、三個SDK函式:  WinExec,ShellExecute ,CreateProcess可以實現呼叫其他程式的要求,其中以WinExec最為簡單,ShellExecute比WinExec靈活一些,CreateProcess最為複雜。WinExec 兩個引數,前一個指定路徑,後一個指

Mac筆記本是用Idea開發工具在Java專案呼叫python指令碼遇到的環境變數問題解決

問題描述: mac筆記本本身會自帶幾個python版本,比如python2.7版本,我沒有改動mac預設的python版本,只是安裝了python3.7版本。 使用Pycharm開發Python專案沒有遇到什麼問題。但是在java專案中呼叫py指令碼的話,就有問題了。我的專案需要將Pycharm開發好的p

Spring專案普通工具呼叫service介面

WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); IControlService controlService= (IControlService) context

Android如何查詢應用呼叫系統資源

在專案中查詢命令: grep "@android:drawable" -rni * --exclude-dir="*svn*" grep "@\*android:drawable" -rni * --exclude-dir="*svn*" grep "android.R"

最近在ArcGIS Engine開發關於呼叫gp工具過程出現COM 元件的呼叫返回了錯誤 HRESULT E_FAIL 錯誤的解決方法 和 學習oracle遇到的一些問題總結

首先說下AE開發中關於gp這一塊的東西,gp是一個很方便的工具,利用gp可以在程式碼中實現ArcMap工具箱中的大部分內容,關於gp工具的使用我就不說了,這些大部分都可以在網上找到,我要說的是gp使用過程中遇到的問題: 一般gp的報錯為 對 COM 元件的呼叫返回了錯誤 H

python呼叫linux系統命令容易遇到的坑+(os.system,os.popen,subprocess.Popen區別)

本人在編寫監控系統程序狀態的指令碼的時候,因為要涉及到呼叫系統命令檢視linux系統程序pid以及時間等,所以使用到了os.popen().read()來獲取返回值 然而呼叫命令發現無法獲取到任何返回值,而直接在shell中執行實際上是存在程序的 原因是os.popen(

android 呼叫系統照相機拍照後儲存到系統相簿,在系統圖庫能看到

需求:  呼叫系統照相機進行拍照,並且儲存到系統相簿,呼叫系統相簿的時候能看到 系統相簿的路徑:String cameraPath= Environment.getExternalStorageDi

如何在自己的App呼叫Android系統自帶的安裝/解除安裝程式

AppUtils裡面寫了如何安裝和解除安裝apk(這段程式碼出自這裡:點選開啟連結~),這裡的安裝和解除安裝呼叫的是Android本身的一個安裝解除安裝,所以可能頁面不會太優雅,並不符合商業App的期望,如果要做到更優雅的實現,就要用到靜默安裝/解除安裝,這個可以參照網上教